home *** CD-ROM | disk | FTP | other *** search
/ Cream of the Crop 26 / Cream of the Crop 26.iso / os2 / pvm34b3.zip / pvm34b3 / pvm3 / misc / group-hack-337 next >
Text File  |  1997-07-22  |  5KB  |  210 lines

  1. *** ../../netlib/pvm3.3.7/src/lpvm.c    Tue Feb 07 15:16:11 1995
  2. --- lpvm.c    Mon May 15 14:17:06 1995
  3. ***************
  4. *** 1971,1976 ****
  5. --- 1971,1977 ----
  6.       char buf[16];                    /* for converting sockaddr */
  7.       char *p;
  8.       int x;
  9. +     int gid;
  10.   
  11.   /*
  12.       pvm_setopt(PvmDebugMask, -1);
  13. ***************
  14. *** 2033,2038 ****
  15. --- 2034,2045 ----
  16.           pvmlogerror("pvmbeatask() can't creat t-auth file\n");
  17.           cc = PvmSysErr;
  18.           goto bail2;
  19. +     }
  20. +     if ((gid = pvmgetugid()) != -1) {
  21. +         if (fchown(authfd, -1, gid) == -1)
  22. +             pvmlogperror("pvmbeatask() can't chown t-auth file");
  23. +         if (fchmod(authfd, 0660) == -1)
  24. +             pvmlogperror("pvmbeatask() can't chmod t-auth file");
  25.       }
  26.   
  27.       sbf = pvm_setsbuf(pvm_mkbuf(PvmDataFoo));
  28. *** ../../netlib/pvm3.3.7/src/pvmcruft.c    Wed Nov 09 10:58:42 1994
  29. --- pvmcruft.c    Mon May 15 14:37:16 1995
  30. ***************
  31. *** 66,71 ****
  32. --- 66,72 ----
  33.   #include <strings.h>
  34.   #define    CINDEX(s,c)    index(s,c)
  35.   #endif
  36. + #include <grp.h>
  37.   #include "global.h"
  38.   #include "protoglarp.h"
  39.   #include "pvmalloc.h"
  40. ***************
  41. *** 458,463 ****
  42. --- 459,465 ----
  43.   
  44.       char hna[128];
  45.       char *p;
  46. +     int gid;
  47.   
  48.   #ifdef    SHAREDTMP
  49.       if (gethostname(hna, sizeof(hna)-1) == -1) {
  50. ***************
  51. *** 466,477 ****
  52.       }
  53.       if (p = CINDEX(hna, '.'))
  54.           *p = 0;
  55. !     (void)sprintf(buf, TDSOCKNAME, pvm_useruid, hna);
  56.   
  57.   #else
  58. !     (void)sprintf(buf, TDSOCKNAME, pvm_useruid);
  59.   #endif
  60.   
  61.       return buf;
  62.   }
  63.   
  64. --- 468,515 ----
  65.       }
  66.       if (p = CINDEX(hna, '.'))
  67.           *p = 0;
  68. !     if ((gid = pvmgetugid()) != -1) {
  69. !         (void)sprintf(buf, TDSOCKGNAME, gid, hna);
  70. !     else
  71. !         (void)sprintf(buf, TDSOCKNAME, pvm_useruid, hna);
  72.   
  73.   #else
  74. !     if ((gid = pvmgetugid()) != -1)
  75. !         (void)sprintf(buf, TDSOCKGNAME, gid);
  76. !     else
  77. !         (void)sprintf(buf, TDSOCKNAME, pvm_useruid);
  78.   #endif
  79.   
  80.       return buf;
  81.   }
  82. + int
  83. + pvmgetugid()
  84. + {
  85. +     static int gid = -2;
  86. +     char *p;
  87. +     struct group *ge;
  88. +     char buf[128];
  89. +     if (gid == -2) {
  90. +         gid = -1;
  91. +         if (p = getenv("PVM_GID")) {
  92. +             if (isdigit(*p))
  93. +                 return (int)atoi(p);
  94. +             if (ge = getgrnam(p))
  95. +                 gid = ge->gr_gid;
  96. +             else {
  97. +                 sprintf(buf, "pvmgetugid() can't lookup group \"%s\"\n", p);
  98. +                 pvmlogerror(buf);
  99. +             }
  100. +             endgrent();
  101. +         }
  102. +     }
  103. +     return gid;
  104. + }
  105.   
  106. *** ../../netlib/pvm3.3.7/src/startup.c    Tue Feb 07 15:16:13 1995
  107. --- startup.c    Mon May 15 14:20:43 1995
  108. ***************
  109. *** 242,247 ****
  110. --- 242,248 ----
  111.       char spath[LEN_OF_TMP_NAM];    /* local socket path */
  112.       struct sockaddr_un uns;
  113.   #endif
  114. +     int gid;
  115.   
  116.       /*
  117.       * make pvmd-pvmd socket
  118. ***************
  119. *** 395,400 ****
  120. --- 396,407 ----
  121.           }
  122.   
  123.       } else {
  124. +         if ((gid = pvmgetugid()) != -1) {
  125. +             if (fchown(d, -1, gid) == -1)
  126. +                 pvmlogperror("mksocs() can't chown address file");
  127. +             if (fchmod(d, 0640) == -1)
  128. +                 pvmlogperror("mksocs() can't chmod address file");
  129. +         }
  130.           cc = write(d, p, strlen(p));
  131.           if (cc != strlen(p)) {
  132.               if (cc == -1) {
  133. *** ../../netlib/pvm3.3.7/src/tdpro.c    Wed Nov 09 10:58:44 1994
  134. --- tdpro.c    Mon May 15 14:20:54 1995
  135. ***************
  136. *** 106,111 ****
  137. --- 106,113 ----
  138.    **           **
  139.    ***************/
  140.   
  141. + char *getenv();
  142.   extern void task_dump();
  143.   char *debug_flags();
  144.   char *inadport_hex();
  145. ***************
  146. *** 298,303 ****
  147. --- 300,306 ----
  148.       char authfn[LEN_OF_TMP_NAM];    /* t-auth file name */
  149.       int d;
  150.       int cc;
  151. +     int gid;
  152.   
  153.       if (upkint(mp, &ver) || upkstr(mp, authfn, sizeof(authfn))) {
  154.           pvmlogerror("tm_connect() bad msg format\n");
  155. ***************
  156. *** 345,356 ****
  157.       tp->t_authnam = TALLOC(LEN_OF_TMP_NAM, char, "auth");
  158.       (void)TMPNAMFUN(tp->t_authnam);
  159.   
  160. !     if ((tp->t_authfd = open(tp->t_authnam, O_RDONLY|O_CREAT|O_TRUNC, 0600))
  161. !     == -1) {
  162.           pvmlogperror("tm_connect() can't create d-auth file");
  163.           PVM_FREE(tp->t_authnam);
  164.           tp->t_authnam = 0;
  165.           goto bail;
  166.       }
  167.   
  168.       /*
  169. --- 348,364 ----
  170.       tp->t_authnam = TALLOC(LEN_OF_TMP_NAM, char, "auth");
  171.       (void)TMPNAMFUN(tp->t_authnam);
  172.   
  173. !     if ((tp->t_authfd = open(tp->t_authnam, O_RDONLY|O_CREAT|O_TRUNC, 0600)) == -1) {
  174.           pvmlogperror("tm_connect() can't create d-auth file");
  175.           PVM_FREE(tp->t_authnam);
  176.           tp->t_authnam = 0;
  177.           goto bail;
  178. +     }
  179. +     if ((gid = pvmgetugid()) != -1) {
  180. +         if (fchown(tp->t_authfd, -1, gid) == -1)
  181. +             pvmlogperror("tm_connect() can't chown d-auth file");
  182. +         if (fchmod(tp->t_authfd, 0660) == -1)
  183. +             pvmlogperror("tm_connect() can't chmod d-auth file");
  184.       }
  185.   
  186.       /*
  187. *** ../../netlib/pvm3.3.7/src/tdpro.h    Fri Jun 03 16:38:32 1994
  188. --- tdpro.h    Mon May 15 14:32:25 1995
  189. ***************
  190. *** 59,66 ****
  191. --- 59,68 ----
  192.   
  193.   #ifdef    SHAREDTMP
  194.   #define    TDSOCKNAME    "/tmp/pvmd.%d.%s"    /* file with task->pvmd sockaddr */
  195. + #define    TDSOCKGNAME    "/tmp/pvmd.g%d.%s"    /* file with task->pvmd sockaddr */
  196.   #else
  197.   #define    TDSOCKNAME    "/tmp/pvmd.%d"    /* file with task->pvmd sockaddr */
  198. + #define    TDSOCKGNAME    "/tmp/pvmd.g%d"    /* file with task->pvmd sockaddr */
  199.   #endif
  200.   
  201.   #define    TM_FIRST    0x80010001        /* first TM_ message */
  202.